#include <stdio.h>
#include <malloc.h>
#include <memory.h>
#include <stdlib.h>
#include <string.h>
#include "ListaSimple.h"

#ifndef __TIN_H__
#define __TIN_H__



typedef enum { TIN_BUG, TIN_IMPRO, TIN_TASK, TIN_NEWFUNC } tipo_inci_t;
typedef enum { TIN_FIXED, TIN_DONT_FIX, TIN_INCOMPLETE } resol_inci_t;
typedef enum { TIN_OPEN, TIN_PROGRESS, TIN_RESOLVED, TIN_REOPEN, TIN_CLOSED } stat_inci_t;
typedef enum { TIN_BLOCKING, TIN_CRITICAL, TIN_MAJOR, TIN_MINOR, TIN_TRIVIAL } prior_inci_t;


typedef struct
{
	char* comm_date; /* fecha en la que se realiza el comentatio */
	int comm_user_id; /* ID del usuario que realiza el comentario */
	char* comm_desc; /* comentario */
} inci_comment_t;


typedef struct
{
	char* stat_date; /* fecha en la que se cambio el estado */
	int stat_user_id; /* usuario que cambio el estado */
	stat_inci_t stat_desc; /* estado */
} inci_status_t;


typedef struct
{
	int inci_id; /* ID de la incidencia */
	tipo_inci_t inci_type;/* tipo de incidencia */
	prior_inci_t inci_priority; /* prioridad de la incidencia */
	int inci_user; /* ID del usuario que creo la incidencia */
	int inci_assigned_user; /* ID del usuario al que se le asigno */
	char* inci_date_created;
	int inci_proyect_id;
	char* inci_summary;
	char* inci_description;
	resol_inci_t inci_resolved;
	char* inci_date_solved;
	TListaSimple inci_stat_hist; /* historial de estados */
	TListaSimple inci_comm; /* comentarios de la incidencia */
} TIN;






int TIN_Crear(TIN* tin, int inci_id, tipo_inci_t inci_type, prior_inci_t inci_priority,
		      int inci_user, int inci_assigned_user, char* inci_date_created,
		      int inci_proyect_id, char* inci_summary, char* inci_description);

int TIN_Liberar(TIN* tin);

int TIN_CambiarEstado(TIN* tin, char* fecha, int* usuario, char* estado);

int TIN_Resolver(TIN* tin, char* fecha, int* usuario, resol_inci_t resolucion);

int TIN_Comentar(TIN* tin, char* fecha, int* usuario, char* comentario);

int TIN_GetDatos(TIN* tin, int* inci_id, tipo_inci_t* inci_type, prior_inci_t* inci_priority,
				 int* inci_user, int* inci_assigned_user, char* inci_date_created,
				 int* inci_proyect_id, char* inci_summary, char* inci_description);

int TIN_GetListaComentarios(const TIN* tin, TListaSimple* comentarios);

int GetListaEstados(const TIN* tin, TListaSimple estados);

#endif /* __TIN_H__ */




